### プロジェクト25 超音波距離計 **1. 説明** この超音波距離計は、音波を発信し、そのエコーを受信することで障害物までの距離を測定します。つまり、距離は即時の値ではなく、発信と受信の時間差を理論的に計算して得られる観測値です。 超音波は物体の形状検出、自動ドアの設置、流速や圧力の推定に利用できます。 さらに、コンピュータとの連携も可能です。そのため、測定値はArduinoボードを介してコンピュータに送信できます。 日常生活では、モーター、サーボ、LEDだけでなく、自動航行、制御、セキュリティ監視システムなどにも広く使われています。 **2. 動作原理** ![](media/B91.png) ご存知の通り、超音波は高周波の人間には聞こえない音波信号の一種です。コウモリのように、このモジュールは波の発信とエコー受信の時間差を計算して障害物までの距離を測定します。 - **最大距離:** 3M - **最小距離:** 5cm - **検出角度:** ≤15° **3. 配線図** ![](media/B92.png) **4. テストコード** 「forever」ブロック内に2つの「serial print」ブロックを作成し、「Ultrasonic」から「read distance」ブロックをドラッグします。trigピンをIO13、echoピンをIO14に設定し、単位はcmにします。0.5秒の遅延を忘れないでください。 ![](media/B93.png) **5. テスト結果** 配線を接続しコードをアップロードした後、シリアルモニターを開きボーレートを9600に設定すると、シリアルポートが距離の値を出力し始めます。 ![](media/B94.png) **6. 知識拡張** 距離計を作ってみましょう。 LCD 1602に文字を表示します。プログラムでは(3,0)に「Keyestudio」、(0,1)に「distance:」を表示し、(9,1)に距離の値を表示します。 値が100(または10)未満の場合、3桁目(または2桁目)の残りが残ることがあります。したがって、特定の条件を判定するために「if」文が必要です。 **配線図:** ![](media/B95.png) **コード:** 1. 基本ブロックを2つドラッグします。 2. 「LCD」でLCDを初期化します。「LCD print」ブロックをドラッグし、文字列「Keyestudio」を追加します(この表示は固定なので「forever」ブロックの外に置いても構いません)。「variable」ブロックを追加し、型をint、名前を「distance」、初期値を0に設定します。 ![](media/B96.png) 3. 読み取った距離の値を変数「distance」に代入します。LCDに「Distance:」を表示し、その後に距離の値を表示します(前に表示する文字数を計算してカーソル位置を設定する必要があります)。 ![](media/B97.png) 4. 表示桁数が減ったときに残った表示をクリアするブロックを作成します。まず距離が100(または10)未満かどうかを判定し、該当する場合は3桁目(または2桁目)の残りにスペースを印刷して前の表示を消します。最後に0.5秒の遅延を追加するのを忘れないでください。 ![](media/B98.png) **完成コード:** ![](media/B99.png) **7. コード説明** trigピンとechoピンを設定した後、距離を読み取ります。表示される値の単位は任意で(cmまたはinch)選択可能です。 ![](media/B100.png)